package com.hightemperator.util;



import org.testng.annotations.Test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class DateUtils {
	private Calendar calendar = null;

	/**
	 * 构造函数.无内容
	 */
	public DateUtils() {
	}

	/**
	 * 私有函数，生成calenar对象。\
	 */
	private void makeCalendar(Date myDate) {
		calendar = Calendar.getInstance();
		calendar.setTime(myDate);
	}

	// @Test
	public static int getCurMonth() {
		Calendar cal = Calendar.getInstance();
		int m = cal.get(Calendar.MONTH) + 1;
		String month = m + "";
		System.out.println(month);
		return m;
	}

	/**
	 * 获得当前时间
	 */
	public static String getDateTime() {
		Calendar now = Calendar.getInstance();
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String date = formatter.format(now.getTime());
		return date;
	}

	/**
	 * 获得当前日期
	 */
	public static String getDate() {
		Calendar now = Calendar.getInstance();
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		String date = formatter.format(now.getTime());
		return date;
	}

	/**
	 * 返回"yyyy年MM月dd日 HH时mm分"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyy年MM月dd日 HH时mm分
	 */
	public String fotmatDate1(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat(
					"yyyy年MM月dd日 HH时mm分");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 返回"MM月dd日"和"HH时mm分"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyy年MM月dd日 HH时mm分
	 */
	// @Test
	public static Map<String, String> fotmatDateMap(String d) {
		// public void fotmatDateMap() {
		// String d="2017-07-22 02:22:22";
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date myDate = null;
		try {
			myDate = format.parse(d);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		// Date myDate=new Date();
		Map<String, String> map = new HashMap<String, String>();
		if (myDate == null) {
			// return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat(
					"yyyy年MM月dd日 HH:mm");
			String dateStr = formatter.format(myDate);
			System.out.println(dateStr);
			String hour = dateStr.substring(12, 17);
			String day = dateStr.substring(5, 11);
			// System.out.println(hour+"  "+day);
			// System.out.println(day.substring(0, 2)+" "+hour.substring(0, 2));
			int dayData = Integer.parseInt(day.substring(0, 2));
			int hourData = Integer.parseInt(hour.substring(0, 2));
			// System.out.println(dayData+"  "+hourData);
			if (dayData < 10) {
				day = dateStr.substring(6, 11);
			} else if (dayData >= 10) {
				day = dateStr.substring(5, 11);
			}
			if (hourData < 10) {
				hour = dateStr.substring(13, 17);
			} else if (hourData >= 10) {
				hour = dateStr.substring(12, 17);
			}
			map.put("day", day);
			map.put("hour", hour);
			System.out.println(map);
		}
		return map;
	}

	/**
	 * 返回"MM月dd日"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyy年MM月dd日
	 */
	@Test
	public static Map<String, String> fotmatDateMap1(String d) {
		// public void fotmatDateMap() {
		// String d="2017-07-22";
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date myDate = null;
		try {
			myDate = format.parse(d);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		// Date myDate=new Date();
		Map<String, String> map = new HashMap<String, String>();
		if (myDate == null) {
			// return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");
			String dateStr = formatter.format(myDate);
			System.out.println(dateStr);
			String day = dateStr.substring(5, 11);
			// System.out.println(hour+"  "+day);
			// System.out.println(day.substring(0, 2)+" "+hour.substring(0, 2));
			int dayData = Integer.parseInt(day.substring(0, 2));
			// System.out.println(dayData+"  "+hourData);
			if (dayData < 10) {
				day = dateStr.substring(6, 11);
			} else if (dayData >= 10) {
				day = dateStr.substring(5, 11);
			}
			map.put("day", day);
			System.out.println(map);
		}
		return map;
	}

	/**
	 * 返回"yyyy年MM月dd日"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyy年MM月dd日
	 */
	public String fotmatDate2(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}

	}

	/**
	 * 返回"yyyy/MM/dd HH:mm"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyyy/MM/dd HH:mm
	 */
	public String fotmatDate3(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat(
					"yyyy/MM/dd HH:mm");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 返回"yyyy/MM/dd"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyy/MM/dd
	 */
	public String fotmatDate4(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 返回"yyyyMMddHHmm"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyyMMddHHmm
	 */

	public String fotmatDate5(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmm");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 返回"yyyy/MM/dd/HH/mm"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyy/MM/dd/HH/mm
	 */

	public String fotmatDate6(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat(
					"yyyy/MM/dd/HH/mm");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 返回"yyyyMMdd"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyyMMdd
	 */
	public String fotmatDate7(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 返回"yyyyMM"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return yyyyMM
	 */

	public String fotmatDate8(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 返回"yyyy-MM-dd hh:mm:ss"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return
	 */
	public String fotmatDate9(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat(
					"yyyy-MM-dd hh:mm:ss");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 返回"yyyy-MM-dd"格式的字符串
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return
	 */
	public String fotmatDate10(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 将日期转换为英式12小时制"时分"格式字符串
	 * 
	 * @param myDate
	 * @return
	 */
	public String fotmatDate11(Date myDate) {
		if (myDate == null) {
			return "";
		} else {
			SimpleDateFormat formatter = new SimpleDateFormat("hh:mm a",
					Locale.ENGLISH);
			String dateStr = formatter.format(myDate);
			return dateStr;
		}
	}

	/**
	 * 在当前日期上加月
	 * 
	 * @param myDate
	 *            日期型参数
	 * @param amount
	 *            int型参数，要增加的月数。
	 * @return 日期型
	 */
	public Date addMonth(Date myDate, int amount) {
		Date returnDate = new Date();
		makeCalendar(myDate);
		calendar.add(Calendar.MONTH, amount);
		returnDate = calendar.getTime();
		return returnDate;
	}

	/**
	 * 在当前日期上加天数
	 * 
	 * @param myDate
	 *            日期型参数
	 * @param amount
	 *            int型参数，要增加的天数。
	 * @return 日期型
	 */
	public Date addDate(Date myDate, int amount) {
		Date returnDate = new Date();
		makeCalendar(myDate);
		calendar.add(Calendar.DATE, amount);
		returnDate = calendar.getTime();
		return returnDate;
	}

	/**
	 * 在当前日期上加小时数
	 * 
	 * @param myDate
	 *            日期型参数
	 * @param amount
	 *            int型参数，要增加的小时数。
	 * @return 日期型
	 */
	public Date addHour(Date myDate, int amount) {
		Date returnDate = new Date();
		makeCalendar(myDate);
		calendar.add(Calendar.HOUR, amount);
		returnDate = calendar.getTime();
		return returnDate;
	}

	/**
	 * 在当前日期上加分钟数
	 * 
	 * @param myDate
	 *            日期型参数
	 * @param amount
	 *            int型参数，要增加的分钟数。
	 * @return 日期型
	 */
	public Date addMinute(Date myDate, int amount) {
		Date returnDate = new Date();
		makeCalendar(myDate);
		calendar.add(Calendar.MINUTE, amount);
		returnDate = calendar.getTime();
		return returnDate;
	}

	/**
	 * 返回年
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int 年
	 */
	public int getYear(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.YEAR);
	}

	/**
	 * 返回中文名称月
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return String 月
	 */
	public String getMonth(Date myDate) {
		// makeCalendar(myDate);
		int m = getMonthInt(myDate);
		String[] months = new String[] { "一月", "二月", "三月", "四月", "五月", "六月",
				"七月", "八月", "九月", "十月", "十一月", "十二月" };
		if (m > 12) {
			return "Unknown to Man";
		}

		return months[m - 1];

	}

	/**
	 * 返回中文名称星期几
	 * 
	 * @param myDate
	 *            日期型参数
	 * @param language
	 *            "ch"时为返回中文，否则返回英文简写
	 * @return String 几
	 */

	public String getDay(Date myDate, String language) {
		makeCalendar(myDate);
		int x = getDayOfWeek(myDate);
		String[] days = null;
		if ("ch".equals(language)) {
			days = new String[] { "星期天", "星期一", "星期二", "星期三", "星期四", "星期五",
					"星期六" };
		} else {
			days = new String[] { "sun", "mon", "tus", "wen", "thu", "fri",
					"sat" };
		}
		if (x > 7) {
			return "Unknown to Man";
		}
		return days[x - 1];
	}

	/**
	 * 当前日期是本月的第几天
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */

	public int getDayOfMonth(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 当前日期是本年的第几天
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */

	public int getDayOfYear(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.DAY_OF_YEAR);
	}

	/**
	 * 当前日期是本年的第几个星期
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */
	public int getWeekOfYear(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.WEEK_OF_YEAR);
	}

	/**
	 * 当前日期是本月的第几个星期
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */
	public int getWeekOfMonth(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.WEEK_OF_MONTH);
	}

	/**
	 * 当前日期是本周的第几天
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */
	public int getDayOfWeek(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.DAY_OF_WEEK);
	}

	/**
	 * 返回小时
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */
	public int getHour(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.HOUR_OF_DAY);
	}

	/**
	 * 返回分钟
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */
	public int getMinute(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.MINUTE);
	}

	/**
	 * 返回秒
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */
	public int getSecond(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.SECOND);
	}

	/**
	 * 返回天
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */
	public int getDate(Date myDate) {
		makeCalendar(myDate);
		return calendar.get(Calendar.DATE);
	}

	/**
	 * 返回月
	 * 
	 * @param myDate
	 *            日期型参数
	 * @return int型
	 */
	public int getMonthInt(Date myDate) {
		makeCalendar(myDate);
		return 1 + calendar.get(Calendar.MONTH);
	}

	/**
	 * 将一个日期String对象转换为一个指定格式的日期对象(2012-05-17)
	 */
	public Date toDate(String date) {
		Date mydate = new Date();
		SimpleDateFormat bartdateformat = new SimpleDateFormat("yyyy-MM-dd");
		try {
			bartdateformat.setTimeZone(TimeZone.getDefault());
			mydate = bartdateformat.parse(date);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return mydate;
	}

	/**
	 * 将一个日期String对象转换为一个指定格式的日期对象(yyyy-MM-dd hh:mm:ss)
	 */
	public Date toDate2(String date) {
		Date mydate = new Date();
		SimpleDateFormat bartdateformat = new SimpleDateFormat(
				"yyyy-MM-dd hh:mm:ss");
		try {
			bartdateformat.setTimeZone(TimeZone.getDefault());
			mydate = bartdateformat.parse(date);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return mydate;
	}

	/**
	 * 根据所传字符型日期，返回其所在的周的第一天的日期，（为里周日为第一天）
	 * 
	 * @param weekId
	 * @return
	 */
	public String firstDayOfWeek(String weekId) {
		DateUtils du = new DateUtils();
		if (weekId != null && !"".equals(weekId.trim())) {
			weekId = du.fotmatDate10(du.addDate(
					du.getFirstDayOfWeek(du.toDate(weekId)), -1));
		} else {
			// 返回当前日期所在周的第一天，-1即转换为第一天为周日
			weekId = du.fotmatDate10(du.addDate(
					du.getFirstDayOfWeek(du.toDate(du.getDate())), -1));
		}
		return weekId;
	}

	/**
	 * 取得某天所在周的第一天(这里周一为第一天）
	 */
	public static Date getFirstDayOfWeek(Date date) {
		Calendar c = new GregorianCalendar();
		c.setFirstDayOfWeek(Calendar.SUNDAY);
		c.setTime(date);
		c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
		return c.getTime();
	}

	/**
	 * 取得某天所在月的第一天(这里周一为第一天）
	 */

	public static void getFirstDayOfMonth() {
		System.out.println("0000");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 设置日期格式
		String date = sdf.format(new Date());// new Date()为获取当前系统时间
		System.out.println(date);
		String[] d = date.split("-");
		String d1 = d[1];
		String d2 = d[2];
		String d3 = "01";
		String dayNum = d1 + "-" + d2 + "-" + d3;
		System.out.println(dayNum);
	}

	/**
	 * 获取当前日期前七天
	 * 
	 * @param date
	 * @return
	 */
	// @Test
	public void getSevenDays() {
		// Calendar c = new GregorianCalendar();
		// c.setFirstDayOfWeek(Calendar.MONDAY);
		// c.setTime(date);
		// c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
		Date date = new Date();

		List<String> list = new ArrayList<String>();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

		for (int i = 0; i < 7; i++) {
			Calendar calendar = Calendar.getInstance(); // 得到日历
			calendar.setTime(date);// 把当前时间赋给日历
			calendar.add(Calendar.DAY_OF_MONTH, -i); // 设置为前一天
			Date dBefore = calendar.getTime(); // 得到前一天的时间
			String d = sdf.format(dBefore).substring(5, 10);
			list.add(d);
			System.out.println("前" + i + "天的日期为" + d);
			System.out.println(list);
		}
		// return list;
	}

	/**
	 * 获取当前日期前30天
	 * 
	 * @param date
	 * @return
	 */
	// @Test
	public static List<String> getPreMonthDays() {
		Date date = new Date();

		List<String> list = new ArrayList<String>();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

		for (int i = 0; i < 30; i++) {
			Calendar calendar = Calendar.getInstance(); // 得到日历
			calendar.setTime(date);// 把当前时间赋给日历
			calendar.add(Calendar.DAY_OF_MONTH, -i); // 设置为前一天
			Date dBefore = calendar.getTime(); // 得到前一天的时间
			String d = sdf.format(dBefore);
			list.add(d);
			// System.out.println("前"+i+"天的日期为"+d);
			// System.out.println(list);
		}
		return list;
	}

	/**
	 * 获取当前日期前五周日期
	 * 
	 * @param date
	 * @return
	 */
	public static Map<String, List<String>> getPreFiveWeeks() {
		Date date = new Date();

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Map<String, List<String>> map = new LinkedHashMap<String, List<String>>();
		
		List<String> l1 = new ArrayList<String>();
		for (int i = -1; i < 7; i++) {
			Calendar calendar = Calendar.getInstance(); // 得到日历
			calendar.setTime(date);// 把当前时间赋给日历
			calendar.add(Calendar.DAY_OF_MONTH, -i); // 设置为前一天
			Date a = calendar.getTime(); // 得到前一天的时间
			String aa = sdf.format(a);
			l1.add(aa);
		}
		
		map.put("one", l1);

		List<String> l2 = new ArrayList<String>();
		for (int i = -1; i < 7; i++) {
			Calendar calendar = Calendar.getInstance(); // 得到日历
			calendar.setTime(date);// 把当前时间赋给日历
			calendar.add(Calendar.DAY_OF_MONTH, -7 - i); // 设置为前一天
			Date c = calendar.getTime(); // 得到前一天的时间
			String cc = sdf.format(c);
			l2.add(cc);
		}
		map.put("two", l2);

		List<String> l3 = new ArrayList<String>();
		for (int i = -1; i < 7; i++) {
			Calendar calendar = Calendar.getInstance(); // 得到日历
			calendar.setTime(date);// 把当前时间赋给日历
			calendar.add(Calendar.DAY_OF_MONTH, -14 - i); // 设置为前一天
			Date e = calendar.getTime(); // 得到前一天的时间
			String ee = sdf.format(e);
			l3.add(ee);
		}
		map.put("three", l3);

		List<String> l4 = new ArrayList<String>();
		for (int i = -1; i < 7; i++) {
			Calendar calendar = Calendar.getInstance(); // 得到日历
			calendar.setTime(date);// 把当前时间赋给日历
			calendar.add(Calendar.DAY_OF_MONTH, -21 - i); // 设置为前一天
			Date g = calendar.getTime(); // 得到前一天的时间
			String gg = sdf.format(g);
			l4.add(gg);
		}
		map.put("four", l4);

		List<String> l5 = new ArrayList<String>();
		for (int i = -1; i < 7; i++) {
			Calendar calendar = Calendar.getInstance(); // 得到日历
			calendar.setTime(date);// 把当前时间赋给日历
			calendar.add(Calendar.DAY_OF_MONTH, -28 - i); // 设置为前一天
			Date j = calendar.getTime(); // 得到前一天的时间
			String jj = sdf.format(j);
			l5.add(jj);
		}
		map.put("five", l5);
		return map;
	}

	/**
	 * 传入一个日期 "yyyy-MM-dd HH:mm:ss" ，返回当前日期的周一与周日
	 * 例如传入"2017-06-12 07:02:31",返回结果为 "06-12~06-18"
	 * 
	 * @param date
	 * @throws ParseException
	 */

	public static String getHour(String date) throws ParseException {
		// date="2017-06-29 09:09:54";
		String str = date.substring(11, 13);
		System.out.println(str);
		return str;
	}

	public static String getMondayAndSunday(String date) throws ParseException {
		DateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置格式
		Date time = f.parse(date);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式
		Calendar cal = Calendar.getInstance();
		cal.setTime(time);
		// 判断要计算的日期是否是周日，如果是则减一天计算周六的，否则会出问题，计算到下一周去了
		int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
		if (1 == dayWeek) {
			cal.add(Calendar.DAY_OF_MONTH, -1);
		}
		// System.out.println("要计算日期为:"+sdf.format(cal.getTime())); //输出要计算日期
		cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天，按中国的习惯一个星期的第一天是星期一
		int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
		cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);// 根据日历的规则，给当前日期减去星期几与一个星期第一天的差值
		String imptimeBegin = sdf.format(cal.getTime());
		// System.out.println("所在周星期一的日期："+imptimeBegin);
		cal.add(Calendar.DATE, 6);
		String imptimeEnd = sdf.format(cal.getTime());
		// System.out.println("所在周星期日的日期："+imptimeEnd);
		String monday = toDate3(imptimeBegin);
		String Sunday = toDate3(imptimeEnd);
		String str = monday + "~" + Sunday;
		System.out.println(str);
		return str;

	}

	public static String formatDateToYMD(String date) {
		// String date="2017-06-29 01:11:08";
		if (date == null)
			return null;
		String d = date.substring(0, 10);
		
		return d;
	}

	/**
	 * 求两个日期间的分钟数
	 * 如果小时就在底下乘60
	 * 
	 * @param date1
	 * @param date2
	 * @return
	 */
	public Long getHoursBetweenDays(Date date1, Date date2) {
		date1 = this.addDate(date1, 1); // 结束日期多一天,即2013-04-24 ---> 2013-04-24
										// 为当天开始当天结束，即24小时
		long diff = date1.getTime() - date2.getTime();
		long hours = diff / (60 * 1000);
		return hours;
	}

	public static void main(String[] args) {
		// Date date = new Date();
		// SimpleDateFormat sdformat = new
		// SimpleDateFormat("HH:mm",Locale.ENGLISH);
		// String LgTime = sdformat.format(date);
		DateUtils du = new DateUtils();
		// // du.toDate("03:14 PM");
		// System.out.println(du.getDay(new Date(), ""));
		// System.out.println("01:12".compareTo("01:51"));
		// System.out.println("123".compareToIgnoreCase("def"));
		StringBuffer sb = new StringBuffer();
		sb.append("\"autosend\":\"on\",\"frequency\":\"\",\"arraydays\":\"thu\",\"begintime\":\"00:15\",\"endtime\":\"17:15\"");
		if (sb.indexOf("arraydays") != -1 && sb.indexOf("[") == -1
				&& sb.indexOf("]") == -1) {
			sb.insert(sb.indexOf("arraydays") + 11, "[");
			sb.insert(sb.indexOf("arraydays") + 17, "]");
		}
		// System.out.println(sb.toString());
		System.out.println(du.getMonthInt(new Date()));
		System.out.println(du.getMonthInt(du.addDate(new Date(), 1)));
	}

	/**
	 * 将一个日期String对象转换为一个指定格式的日期对象(MM-dd)
	 */

	public static String toDate3(String date) {
		String str = date.substring(5, 10);
		System.out.println(str);
		return str;
	}

	/**
	 * 将一个日期String对象转换为一个指定格式的日期对象(MM-dd)
	 */

	public static String toDate4(String date) {
		String str = date.substring(5, 10);
		System.out.println(str);
		return str;
	}

	/**
	 * 将毫秒转换成 1小时30分的型式
	 * 
	 * @param second
	 * @return
	 */
	// @Test
	public static String change(String sec) {
		int second = Integer.parseInt(sec);
		// public void change(){
		// int second=280;
		String str = null;
		int h = 0;
		int d = 0;
		int s = 0;
		int temp = second % 3600;
		if (second > 3600) {
			h = second / 3600;
			if (temp != 0) {
				if (temp > 60) {
					d = temp / 60;
					if (temp % 60 != 0) {
						s = temp % 60;
					}
				} else {
					s = temp;
				}
			}
		} else {
			d = second / 60;
			if (second % 60 != 0) {
				s = second % 60;
			}
		}
		if (h == 0) {
			str = d + "分钟";
			// System.out.println(str);
		}
		if (h > 0 && d < 10) {
			str = h + "小时" + "0" + d + "分";
			// System.out.println(h+"小时"+"0"+d+"分");
		}
		if (h > 0 && d >= 10) {
			str = h + "小时" + d + "分";
			// System.out.println(str);
		}
		System.out.println(str);
		return str;
	}

}